*===========* *From Disch * *Post at ZMD* *===========* //12-20-05: Disch would like to note that the mapper must first be changed to something that supports greater than 256k PRG before attempting this. NES ROM expansion can't be done automatically. If you do this, you'll have to do it by hand. Anyway... to do what you want to do is -possible- (and in fact I've personally done it several times and am currently working on a hack involving it)... but it will require at least some asm knowledge. So if you aren't familiar... bone up on some 6502 assembly. Don't bother trying to find a shortcut around it... some asm will be mandidtory. Now a major downside to this... is that since FF1 is already 256K in size... if you want to expand it even for a few extra bytes, you have to push it up to 512K. Another downside... is that some programs are oblivious to the size change (FFHackster, for example), so they will effectively destroy your ROM if you try to use them after you expand your ROM. Assuming you still want to go through with it.... and assuming you know a bit about 6502 and NES architecture... - Back up your ROM (always #1) - Open up a hex editor and inflate the ROM size to $80010 bytes (512K). - Copy all the data that currently exists at $3C010-$40010... and paste it to $7C010-$80010 (this is the "master" code of the game, for lack of a better term. It must stay at the end of the ROM). You can flood 3C010-40010 with zeros after that if you want... the game won't use it anymore. - Change offset $00004 from $10 to $20 (to show that you've doubled the size) Now you have 256K of extra space... but being able to use it is something else entirely (and will take a bit more work). You gave text as an example... so continuing with that: - You have to find out where in the game it's reading the text from ROM, and where it's writing it to in VRAM (or RAM if you're lucky... but VRAM is much more likely). You can do this by setting a breakpoint in FCEUd so that it breaks when it reads the text you're looking for. - Intercept the original loading routine (the one you found by the above step) and insert your own... which basically does the same thing (copy/paste job possibly)... but swaps to another bank first (and of course swaps back to the original bank when you're done). Alternativly you could make heavy changes to the loading code so that it swaps to the new bank... but I prefer to cut it off and write my own. As you can probably see... this is no beginner project. But if you know asm, it's not particularly hard. And before you ask... no... there is no other way to do it. I'm positive.